package com.grid;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/*@Retention用来声明注解的保留策略，有CLASS、RUNTIME和SOURCE这三种，分别表示注解保存在类文件、
 * JVM运行时刻和源代码中。只有当声明为RUNTIME的时候，才能够在运行时刻通过反射API来获取到注解的信息。
@Target用来声明注解可以被添加在哪些类型的元素上，如类型、方法和域等。*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
//@interface用来声明一个注解
public @interface ViewField {

    /* Grid的字段标题 */
    String header() default "";

    /* Grid字段类型 */
    // auto
    // string
    // int
    // float
    // code
    // date
    String type() default "auto";

    /* Grid的字段是否隐藏 */
    boolean hidden() default false;

    /* Grid的字段是否能排序 */
    boolean sortable() default true;

    /* Grid的字段列默认宽度 */
    int width() default 100;

    /* Grid的字段列的宽度是否固定不变 */
    boolean fixed() default false;

    /* Grid的字段对齐方式 */
    // left
    // right
    // middle
    String align() default "left";

    //虚拟字段指定排序字段
    String sortByField() default "";

    /*
     * 扩展属性
     * date   'Y-m-d'
     * code   实际对应的codeName
     * */  
    String attributes() default "";
}
